package modelo.diagrama.de.classes;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;

import modelo.diagramas.ObjetoBase;

public class Nota extends ObjetoBase {

	public static final int LARGURA_INICIAL = 100;
	public static final int ALTURA_INICIAL = 70;
	
	private Classe classePropietariaNota;

	private String textoNota = "Comentarios";

	public Nota( int x, int y, Color corObjeto,
			Color corAtributo, Color corContorno) {
		super(x, y, (x + LARGURA_INICIAL), (y + ALTURA_INICIAL),
				corObjeto, corAtributo, corContorno);
	}

	// Aumenta a largura da nota de acordo com o texto do comentario.
	public void aumentaLarguraTamanhoTexto(){
		if (this.getTextoNota().length() > 8) {
			this.setLargura(this.getLargura() + 10 *(this.getTextoNota().length() - 10)) ;
		}
	}
	//TODO: Fazer a operacao.
	// Aumenta a altura de acordo com o tamanho do texto.
	public void aumentaAlturaTamanhoTexto(){
		
	}
	
	@Override
	public void pinta(Graphics g) {
		this.setLargura(LARGURA_INICIAL);
		this.setAltura(ALTURA_INICIAL);
		
		aumentaLarguraTamanhoTexto();
		
		g.setColor(getCorContorno());
		
		// Desenha linha superior
		g.drawLine(getX(), getY(), getX()+( (9*this.getLargura())/10) , getY());
		
		//Desenha Linha diagonal
		g.drawLine(getX()+( 9*(this.getLargura())/10), getY(), (getX()+this.getLargura()), getY()+( (this.getAltura())/10));
		
		// Desenha linha reta da diagonal
		g.drawLine(getX()+( 9*(this.getLargura())/10), getY(), getX()+( 9*(this.getLargura())/10),getY()+( (this.getAltura())/10));
		
		// Desenha linha lateral da diagonal
		g.drawLine(getX()+( 9*(this.getLargura())/10), getY()+( (this.getAltura())/10), (getX()+this.getLargura()),getY()+( (this.getAltura())/10));
		
		// Desenha linha lateral direita
		g.drawLine(getX()+this.getLargura(), getY()+( (this.getAltura())/10), (getX()+this.getLargura()),getY()+this.getAltura());
		
		// Desenha linha abaixo
		g.drawLine(getX(), getY()+this.getAltura(), (getX()+this.getLargura()),getY()+this.getAltura());
		
		// Desenha linha esquerda
		g.drawLine(getX(), getY(),getX(), getY()+this.getAltura());
		
		// Desenha o texto da nota.
		g.drawString(getTextoNota(), getX()+(getLargura()/5), getY()+(getAltura()/5));
		
		pintaBordaSelecionado(g);
		
	}


	public String getTextoNota() {
		return textoNota;
	}

	public void setTextoNota(String textoNota) {
		this.textoNota = textoNota;
	}

	public Classe getClassePropietariaNota() {
		return classePropietariaNota;
	}

	public void setClassePropietariaNota(Classe classePropietariaNota) {
		this.classePropietariaNota = classePropietariaNota;
	}	

}
